package com.example.screenpixel.slice;

import com.example.screenpixel.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.ComponentContainer;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.Text;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.utils.LayoutAlignment;
import ohos.app.Context;

public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        // super.setUIContent(ResourceTable.Layout_ability_main);

        // 1. 创建定向布局，并设置相关的属性
        // 创建定向布局的布局配置对象
        ComponentContainer.LayoutConfig configForLayout = new ComponentContainer.LayoutConfig(
                ComponentContainer.LayoutConfig.MATCH_PARENT,   // 宽度为match_parent
                ComponentContainer.LayoutConfig.MATCH_PARENT);  // 高度为match_parent
        // 创建定向布局对象，并传入布局配置
        DirectionalLayout layout = new DirectionalLayout(this);
        layout.setLayoutConfig(configForLayout); // 设置定向布局的布局配置选项
        layout.setOrientation(DirectionalLayout.VERTICAL); // 设置定向布局的纵向排列方式

        // 2. 创建文本组件，并添加到定向布局中
        // 创建文本组件的布局配置对象
        Text text = new Text(this);
        DirectionalLayout.LayoutConfig configForText = new DirectionalLayout.LayoutConfig(
                toPixels(100, getContext()), // 设置宽度为100vp
                toPixels(16, getContext())); // 设置高度为16vp
        text.setLayoutConfig(configForText); // 设置文本组件的布局配置
        configForText.alignment = LayoutAlignment.HORIZONTAL_CENTER; // 设置居中方式为水平居中
        text.setBackground(new ShapeElement(
                getContext(),
                ResourceTable.Graphic_background_ability_main)); // 设置文本组件的背景
        text.setText("Hello World"); // 设置文本内容为"Hello World"
        text.setTextSize(toPixels(16, getContext())); // 设置文本大小为16fp
        layout.addComponent(text); // 将文本组件加入到定向布局中

        // 3. 将UI内容设置为定向布局
        super.setUIContent(layout);

    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }

    /**
     * 将虚拟像素(字体像素)转换为物理像素
     * @param value 虚拟像素或字体像素
     * @param context 上下文对象
     * @return 物理像素
     */
    public static int toPixels(int value, Context context) {
        return value * context.getResourceManager().getDeviceCapability().screenDensity / 160;
    }

}
